package com.joe.demo.nio.buffer;

import lombok.extern.slf4j.Slf4j;

import java.nio.ByteBuffer;

/**
 * @Description bytebuffer 读
 * @Author gaojw
 * @Date 2024-08-28
 */
@Slf4j
public class TestBufferRead {

    public static void main(String[] args) {
        ByteBuffer buffer = ByteBuffer.allocate(10);
        buffer.put(new byte[]{'a', 'b', 'c', 'd'});
        buffer.flip();

        // 从头开始读
        log.info("{}",buffer.get(new byte[4]));
        // 读完后，从头再读
        buffer.rewind();
        log.info("{}", (char)buffer.get());

        // mark & reset
        // mark 做一个标记，记录 position 的位置，reset 是将 position 重置到 mark 的位置
        buffer.mark();
        log.info("{}", (char)buffer.get());
        buffer.reset();
        log.info("{}", (char)buffer.get());

        // get(i) 不会改变 position 读索引的位置
        log.info("{}", (char)buffer.get(0));
        log.info("{}", (char)buffer.get());
    }
}
